package cn.edu.ujn.service;

import java.util.HashMap;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import cn.edu.ujn.dao.Customer;
import cn.edu.ujn.dao.CustomerMapper;
import cn.edu.ujn.util.Page;
@Service("customerService")
@Transactional
public class CustomerServiceImpl implements ICustomerService {
	@Autowired
	private CustomerMapper customerMapper;
	@Override
	public Page<Customer> selectByCondintion(Integer currentPage, Integer pageSize, String custName, String custSource,
			String custIndustry, String custLevel) {
		//因为各种参数类型不同，可以用map 去处理key-->value
		//用map集合去把各种参数
		HashMap map = new HashMap();
		Page<Customer> page = new Page<Customer>();
		//搜索参数
		map.put("cust_name", custName);
		map.put("cust_source", custSource);
		map.put("cust_industry", custIndustry);
		map.put("cust_level", custLevel);
		//计算当前的页面最后的一行的，然后作为查询的开始位置，key必须用start,工具类的导航类已经写名字了，必须对应
		map.put("start", (currentPage-1)*pageSize);
		//设置页面显示多少行，key必须用rows,工具类的导航类已经写名字了，必须对应
		map.put("rows", pageSize);
		//按照给的搜索条件进行查询，返回List客户列表
		List<Customer> Rows = customerMapper.selectCustomerList(map);
		//计算上面条件进行查询的总行数
		int Total=customerMapper.selectCustomerListCount(map);
		//设置分页
		page.setPage(currentPage);//设置当前页面
		page.setSize(pageSize);//设置页面大小
		page.setRows(Rows);//条件查询的结果返回
		page.setTotal(Total);//总行数
		
		//返回一个Page对象
		return page;
	}
	
	//删除
	@Override
	public int deleteCustomer(Integer id) {
		return customerMapper.deleteByPrimaryKey(id);
	}
	//创建客户
	@Override
	public int creatCustomer(Customer customer) {
		
		return customerMapper.insert(customer);
	}
	//通过id 获取该客户的信息
	@Override
	public Customer getCustomerById(Integer id) {
		return customerMapper.selectByPrimaryKey(id);
	}
	//更新客户信息
	@Override
	public int updateCustomer(Customer customer) {
		//使用updateByPrimaryKeySelective这个方法，因为使用updateByPrimaryKey没有判断空字段操作
		return customerMapper.updateByPrimaryKeySelective(customer);
	}




}
